// 封装分类数据业务相关的业务代码

// 路由钩子函数
import { onBeforeRouteUpdate } from 'vue-router';
import { ref, onMounted } from "vue";
import { getCategoryAPI } from '@/apis/category';

// 用于接收路由参数
import { useRoute } from 'vue-router'
export function useCategory() {
    // 获取数据
    const categoryData = ref({})

    // 创建router实例对象
    const route = useRoute();

    // 默认接收路由默认参数id,但是发生改变时,由 onBeforeRouteUpdate 传递来的id进行变化

    const getCategory = async (id = route.params.id) => {
        // 通过uesRouter获得接口传递来的参数
        // params 定义是有关于接口的路由参数的定义
        const res = await getCategoryAPI(id)
        categoryData.value = res.result
    }
    onMounted(() => {
        getCategory()
    })

    // 轮播图
    // 改进:路由参数变化时候,可以把分类数据接口重新发送
    onBeforeRouteUpdate((to) => {
        // 存在问题:使用最新的路由参数请求最新的分类数据
        getCategory(to.params.id)
    })

    return {
        categoryData
    }
}